home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / hf^k-5.dms / in.adf / PhxASS.Lha / Examples / getmode.asm < prev    next >
Encoding:
Assembly Source File  |  1996-10-11  |  2.0 KB  |  107 lines

  1. **
  2. **    GetMode.asm
  3. **
  4. **    Selects screen mode with Reqtools-requester and displays
  5. **    its mode id on stdout.
  6. **
  7. ** 14.08.96 (Phx) created
  8. ** 11.10.96 (Phx) replaced reqtools.library by asl.library
  9. **          minor changes for inclusion into PhxAss' examples drawer
  10. **
  11.  
  12.  
  13.     incdir    "include"
  14. **  You should also define an include path for your Commodore **
  15. ** includes or make use of the PHXASSINC environment variable **
  16.     include    "lib/exec.i"        ; library offsets
  17.     include "lib/dos.i"
  18.     include    "lib/asl.i"
  19.  
  20.     include    "libraries/asl.i"
  21.  
  22.  
  23.     code
  24.     near    a4,-1
  25.  
  26.  
  27. start:
  28.     initnear
  29.     move.l    ExecBase.w,a6
  30.     move.l    a6,_SysBase(a4)
  31.     lea    dosName(pc),a1
  32.     moveq    #36,d0
  33.     jsr    OpenLibrary(a6)        ; open dos.library v36
  34.     move.l    d0,_DosBase(a4)
  35.     beq    cleanup
  36.     lea    aslName(pc),a1
  37.     moveq    #38,d0
  38.     jsr    OpenLibrary(a6)        ; open asl.library v38 (older ver-
  39.     move.l    d0,_AslBase(a4)        ; sions have no scr.mode requester)
  40.     beq    cleanup
  41.  
  42.     move.l    d0,a6
  43.     move.l    #ASL_ScreenModeRequest,d0
  44.     lea    tag_end(pc),a0
  45.     jsr    AllocAslRequest(a6)    ; alloc memory for requester struct
  46.     move.l    d0,scrmodreq(a4)
  47.     beq    cleanup
  48.  
  49.     move.l    d0,a0
  50.     lea    scrmodtags(pc),a1
  51.     jsr    AslRequest(a6)        ; render screen mode requester
  52.     tst.l    d0
  53.     beq    cleanup            ; clicked cancel?
  54.  
  55.     move.l    _DosBase(a4),a6
  56.     move.l    scrmodreq(a4),a0
  57.     move.l    sm_DisplayID(a0),-(sp)    ; fetch and print display id
  58.     lea    modetxt(pc),a0
  59.     move.l    a0,d1
  60.     move.l    sp,d2
  61.     jsr    VPrintf(a6)
  62.     addq.l    #4,sp
  63.  
  64. cleanup:
  65.     move.l    _SysBase(a4),a6
  66.     move.l    _AslBase(a4),d7
  67.     beq    2$
  68.     exg    d7,a6
  69.     move.l    scrmodreq(a4),a0
  70.     jsr    FreeAslRequest(a6)    ; free screen mode req. structure
  71.     move.l    a6,a1
  72.     move.l    d7,a6
  73.     jsr    CloseLibrary(a6)    ; close asl.library
  74. 2$:    move.l    _DosBase(a4),d0
  75.     beq    1$
  76.     move.l    d0,a1
  77.     jsr    CloseLibrary(a6)    ; close dos.library
  78. 1$:    moveq    #0,d0
  79.     rts
  80.  
  81.  
  82. dosName:
  83.     dc.b    "dos.library",0
  84. aslName:
  85.     dc.b    "asl.library",0
  86. modetxt:
  87.     dc.b    "0x%08lx\n",0
  88. scrmodtxt:
  89.     dc.b    "Select screen mode",0
  90.     cnop    0,4
  91. scrmodtags:
  92.     dc.l    ASLSM_TitleText,scrmodtxt
  93. tag_end:
  94.     dc.l    TAG_END
  95.  
  96.  
  97.  
  98.     bss
  99.  
  100. _SysBase:    ds.l    1
  101. _DosBase:    ds.l    1
  102. _AslBase:    ds.l    1
  103. scrmodreq:    ds.l    1
  104.  
  105.  
  106.     end
  107.